﻿using System;
using System.Collections.Generic;
using Domain.MainModule.Entities;

namespace Application.MainModule.RateParamTypeManagement
{
    public interface IRateParamTypeManagementService
    {
        /// <summary>
        /// Add new rateParam.
        /// </summary>
        /// <param name="rateParam">RateParam to be added</param>
        void AddRateParamType(RateParamType rateParamType);

        /// <summary>
        /// Change existing rateParam.
        /// </summary>
        /// <param name="rateParam">Existing rateParam to modify.</param>
        void ChangeRateParamType(RateParamType rateParamType);

        /// <summary>
        /// Find an rateParam by its Id.
        /// </summary>
        /// <param name="rateParamId">RateParamId</param>
        /// <returns>An rateParam</returns>
        RateParamType FindRateParamTypeById(Guid rateParamId);

        /// <summary>
        /// Find an rateParam by name.
        /// </summary>
        /// <param name="name">User name.</param>
        /// <returns>A RateParam</returns>
        List<RateParamType> FindRateParamTypesByName(string name);

        /// <summary>
        /// Remove an existing rateParam.
        /// </summary>
        /// <param name="rateParam">The adress to be removed.</param>
        void RemoveRateParamType(RateParamType rateParam);
    }
}
